<?php

/**
 * recibir_solicitud actions.
 *
 * @package    SAC_CLonsa
 * @subpackage recibir_solicitud
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class recibir_solicitudActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $peticion)
  {
  }
  
  public function executeSolicitudes(sfWebRequest $peticion)
  {
      /* Si es post es porque se está mandando el formulario desde esta misma página (template) */
      if( $peticion->isMethod('post') ){// && !is_null($peticion->getParameter('idSolicitud')) ){
          $this->forward( 'recibir_solicitud' , 'recibir' );
      }

      if( $this->getUser()->hasCredential('admin') ){
          $this->entro_en = 1;
          $solicitudes = ItemOsPeer::getItemsPorEstadosSolicitudId( 12, 15); // Estado = En Compra o Estado = No Recibida
      }
      else{
          if( $this->getUser()->hasCredential('enc_adq_1') ){
              $solicitudes = ItemOsPeer::getItemsParaEncargadoAdquisicionesPorEstadosId( 12, 15, 1 );
              $this->entro_en = 2;
          }
          elseif( $this->getUser()->hasCredential('enc_adq_2') ){
              $solicitudes = ItemOsPeer::getItemsParaEncargadoAdquisicionesPorEstadosId( 12, 15, 2 );
              $this->entro_en = 3;
          }
          else{
              $solicitudes = null;
              $this->entro_en = 4;
          }
      }
      $this->solicitudes = $solicitudes;
  }

  public function executeRecibir(sfWebRequest $peticion)
  {
      if( !is_null($peticion->getParameter('idSolicitud')) && $peticion->isMethod('post') )
      {//si existe el parámetro id y no es método post
          $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $peticion->getParameter('idSolicitud') );
    
          if( !is_null($solicitud) )
          {
              $this->bandera = 0;
              $this->solicitud = $solicitud;
              $peticion->setParameter( 'id_solicitud', $solicitud->getId() );

          }
          else
          {
              $this->bandera = 1;
          }
      }//fin if
      elseif( $peticion->isMethod('post') && !is_null($peticion->getParameter('id_solicitud')) )
      {
          //$peticion->setParameter('observaciones', $peticion->getParameter('observaciones'));
          $this->observaciones = $peticion->getParameter('observacion_recibo_en_adquisiciones');
          //$peticion->setParameter( 'observaciones', $peticion->getParameter('observacion_recibo_en_adquisiciones') );

          if($peticion->getParameter('radio_button_recibir_solicitud') == 'recibir')
          {/* Se ha aceptado el producto solicitado entregado por el proveedor */
              $this->bandera = 2;
              $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $peticion->getParameter('id_solicitud') );
              $this->solicitud = $solicitud ;
          }
          else
          {/* Se ha rechazado el producto solicitado entregado por el proveedor */
              $this->bandera = 3;
              $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $peticion->getParameter('id_solicitud'));
              $this->solicitud = $solicitud;
          }          
      }
      elseif( $peticion->isMethod('post') && !is_null( $peticion->getParameter('recibirSolicitudId') ) ){
          $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $peticion->getParameter('recibirSolicitudId') );
          $this->solicitud = $solicitud;

//          if( $solicitud->getEstadoSolicitudId() != 11){ //Si el estado de la solicitud no es En Compra
//              $this->redirect('recibir_solicitud/solicitudes');
//          }
          $this->bandera = 4;
          $accion_en_solicitud = new AccionItemOs();
          $accion_en_solicitud->setFechaAccion( time() );
          $accion_en_solicitud->setsfGuardUser( $this->getUser()->getGuardUser() );
          $accion_en_solicitud->setItemOs( $solicitud );
          $accion_en_solicitud->setTipoAccionItemOsId( 11 );// Tipo Acción = Recibo Conforme (Encargado Adquisición)
          $accion_en_solicitud->setObservaciones( $peticion->getParameter('observaciones') );
          $accion_en_solicitud->save();
          $solicitud->setEstadoSolicitudId( 13 );//Estado = Recibida
          $solicitud->save();
      }
      
      elseif( $peticion->isMethod('post') && !is_null($peticion->getParameter('rechazarSolicitudId')) ){
          $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $peticion->getParameter('rechazarSolicitudId') );
          $this->solicitud = $solicitud;
          
          $this->bandera = 5;
          $accion_en_solicitud = new AccionItemOs();
          $accion_en_solicitud->setFechaAccion( time() );
          $accion_en_solicitud->setsfGuardUser( $this->getUser()->getGuardUser() );
          $accion_en_solicitud->setItemOs( $solicitud );
          $accion_en_solicitud->setTipoAccionItemOsId( 12 );// Tipo Acción = Recibo Incoforme (Encargado Adquisición)
          $accion_en_solicitud->setObservaciones( $peticion->getParameter('observaciones') );
          $accion_en_solicitud->save();
          $solicitud->setEstadoSolicitudId( 15 ); // Estado = No recibida ( Rechazada )
          $solicitud->save();
          
          $this->redirect('recibir_solicitud/solicitudes');
      }
      else
      {
          $this->bandera = 6;
      }
  }
}